class ValueMetaFactory {

  public static IValueMeta 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;
  }

  private  ValueMetaFactory();

}