docs: private void expandAttributeNodes(CComplexObject sourceObject) {
          List<CAttribute> differentialAttributes = Lists.newArrayList();
          for (CAttribute cAttribute : sourceObject.getAttributes()) {
              if (cAttribute.getDifferentialPath() != null) {
                  differentialAttributes.add(cAttribute);
              }
  
          }
  
          for (CAttribute specializedAttribute : differentialAttributes) {
              expandAttribute(sourceObject, specializedAttribute);
              sourceObject.getAttributes().remove(specializedAttribute);
          }
  
          for (CAttribute cAttribute : sourceObject.getAttributes()) {
              for (CObject cObject : cAttribute.getChildren()) {
                  if (cObject instanceof CComplexObject) {
                      expandAttributeNodes((CComplexObject) cObject);
                  }
              }
          }
      }