code: public static Object getFieldValue( Object object, String lowerKey, String upperKey ) //throws NoSuchFieldException
    {
      if( object == null )
        return null;
  
      Method getMethod = getMethod( object, "get" + lowerKey );
  
      if( getMethod == null )
        getMethod = getMethod( object, "get" + upperKey );
  
      if( getMethod == null )
        getMethod = getMethod( object, "is" + lowerKey );
  
      if( getMethod == null )
        getMethod = getMethod( object, "is" + upperKey );
  
      if( getMethod != null )
        try
        {
          return getMethod.invoke( object, new Object[ 0 ] );
        }
        catch( Throwable t )
        {
          // ignore, see if can get it from the field
        }
  
      try
      {
        Field field = getField( object.getClass(), lowerKey );
        field.setAccessible( true );
        return field.get( object );
      }
      catch( IllegalAccessException e )
      {
        // shouldn't ever be thrown, because setAccessible(true) was called before
        return null;
      }
      catch( NoSuchFieldException e1 )
      {
        try
        {
          Field field = getField( object.getClass(), upperKey );
          field.setAccessible( true );
          return field.get( object );
        }
        catch( Throwable throwable )
        {
          // ignore, the rest of the method will do other checks
        }
  
        //throw new BackendlessException( "Unable to retrieve value for field/property '" + lowerKey );
        return null;
      }
    }
docs: Retrieves the value of the field with given name from the given object.
  
  @param object   object containing the field
  @param lowerKey name of the field starting with lower case letter
  @param upperKey name of the field starting with the upper case letter
  @return Object, which is the value of the given field in the given object; null, if for some reason setAccessible(true) didn't work
  @throws NoSuchFieldException if object doesn't have a field with such name