code: @Override
  	public R visitDeclared(DeclaredType t, P p) {
  		final String fqn = t.asElement().toString();
  		if (String.class.getCanonicalName().equals(fqn)) {
  			return visitString(t, p);
  		} else if (Date.class.getCanonicalName().equals(fqn)) {
  			return visitDate(t, p);
  		} else if (List.class.getCanonicalName().equals(fqn)) {
  			return visitList(t, p);
  		} else if (Boolean.class.getCanonicalName().equals(fqn)) {
  			return visitBooleanWrapper(t, p);
  		} else if (Double.class.getCanonicalName().equals(fqn)) {
  			return visitDoubleWrapper(t, p);
  		} else if (Long.class.getCanonicalName().equals(fqn)) {
  			return visitLongWrapper(t, p);
  		} else if (Byte.class.getCanonicalName().equals(fqn)) {
  			return visitByteWrapper(t, p);
  		} else if (Character.class.getCanonicalName().equals(fqn)) {
  			return visitCharacterWrapper(t, p);
  		} else if (Float.class.getCanonicalName().equals(fqn)) {
  			return visitFloatWrapper(t, p);
  		} else if (Integer.class.getCanonicalName().equals(fqn)) {
  			return visitIntegerWrapper(t, p);
  		} else if (Short.class.getCanonicalName().equals(fqn)) {
  			return visitShortWrapper(t, p);
  		} else if (JsonHash.class.getCanonicalName().equals(fqn)) {
  			return visitJsonHash(t, p);
  		} else if (JsonArray.class.getCanonicalName().equals(fqn)) {
  			return visitJsonArray(t, p);
  		} else if (AptUtil.isEnum(t.asElement())) {
  			return visitEnum(t, p);
  		} else {
  			return visitUndefinedClass(t, p);
  		}
  	}
docs: {@inheritDoc}