code: private static String readMapValue(String ref, TypeDef source, Property property) {
          TypeRef propertyTypeRef = property.getTypeRef();
          Method getter = getterOf(source, property);
          if (getter == null) {
              return "null";
          }
  
          TypeRef getterTypeRef = getter.getReturnType();
          if (propertyTypeRef.getDimensions() == getterTypeRef.getDimensions() && propertyTypeRef.isAssignableFrom(getterTypeRef)) {
              return readObjectValue(ref, source, property);
          }
  
          if (property.getTypeRef().getDimensions() > 0) {
              return readArrayValue(ref, source, property);
          }
          if (property.getTypeRef() instanceof ClassRef && ((ClassRef)getterTypeRef).getDefinition().isAnnotation()) {
              return readAnnotationValue("((Map)(" + ref + " instanceof Map ? ((Map)" + ref + ").get(\"" + getterOf(source, property).getName() + "\") : "+getDefaultValue(property)+"))", ((ClassRef) getterTypeRef).getDefinition(), property);
          }
          return readObjectValue(ref, source, property);
      }
docs: Returns the string representation of the code that given a reference of the specified type, reads the specified property.
  @param ref           The reference.
  @param source        The type of the reference.
  @param property      The property to read.
  @return              The code.