code: private Boolean equalsImpl(Object o) {
  		if (o == this)
  			return true;
  
  		if (!type.isInstance(o))
  			return false;
  		for (Method memberMethod : getMemberMethods()) {
  			String member = memberMethod.getName();
  			Object ourValue = memberValues.get(member);
  			Object hisValue = null;
  			XAnnotationInvocationHandler hisHandler = asOneOfUs(o);
  			if (hisHandler != null) {
  				hisValue = hisHandler.memberValues.get(member);
  			} else {
  				try {
  					hisValue = memberMethod.invoke(o);
  				} catch (InvocationTargetException e) {
  					return false;
  				} catch (IllegalAccessException e) {
  					throw new AssertionError(e);
  				}
  			}
  			if (!memberValueEquals(ourValue, hisValue))
  				return false;
  		}
  		return true;
  	}
docs: Implementation of dynamicProxy.equals(Object o)