public static ValueMetaInterface guessValueMetaInterface( Object object ) {
    if ( object instanceof Number ) {
      // this is numeric object
      if ( object instanceof BigDecimal ) {
        return new ValueMetaBigNumber();
      } else if ( object instanceof Double ) {
        return new ValueMetaNumber();
      } else if ( object instanceof Long ) {
        return new ValueMetaInteger();
      }
    } else if ( object instanceof String ) {
      return new ValueMetaString();
    } else if ( object instanceof Date ) {
      return new ValueMetaDate();
    } else if ( object instanceof Boolean ) {
      return new ValueMetaBoolean();
    } else if ( object instanceof byte[] ) {
      return new ValueMetaBinary();
    }
    // ask someone else
    return null;
  }
@Test
  public void testGuessValueMetaInterface() {
    assertTrue( ValueMetaFactory.guessValueMetaInterface( new BigDecimal( 1.0 ) ) instanceof ValueMetaBigNumber );
    assertTrue( ValueMetaFactory.guessValueMetaInterface( new Double( 1.0 ) ) instanceof ValueMetaNumber );
    assertTrue( ValueMetaFactory.guessValueMetaInterface( new Long( 1 ) ) instanceof ValueMetaInteger );
    assertTrue( ValueMetaFactory.guessValueMetaInterface( new String() ) instanceof ValueMetaString );
    assertTrue( ValueMetaFactory.guessValueMetaInterface( new Date() ) instanceof ValueMetaDate );
    assertTrue( ValueMetaFactory.guessValueMetaInterface( new Boolean( false ) ) instanceof ValueMetaBoolean );
    assertTrue( ValueMetaFactory.guessValueMetaInterface( new Boolean( true ) ) instanceof ValueMetaBoolean );
    assertTrue( ValueMetaFactory.guessValueMetaInterface( false ) instanceof ValueMetaBoolean );
    assertTrue( ValueMetaFactory.guessValueMetaInterface( true ) instanceof ValueMetaBoolean );
    assertTrue( ValueMetaFactory.guessValueMetaInterface( new byte[10] ) instanceof ValueMetaBinary );

    // Test Unsupported Data Types
    assertEquals( null, ValueMetaFactory.guessValueMetaInterface( null ) );
    assertEquals( null, ValueMetaFactory.guessValueMetaInterface( new Short( (short) 1 ) ) );
    assertEquals( null, ValueMetaFactory.guessValueMetaInterface( new Byte( (byte) 1 ) ) );
    assertEquals( null, ValueMetaFactory.guessValueMetaInterface( new Float( 1.0 ) ) );
    assertEquals( null, ValueMetaFactory.guessValueMetaInterface( new StringBuilder() ) );
    assertEquals( null, ValueMetaFactory.guessValueMetaInterface( (byte) 1 ) );
  }