code: private JSType joinRecordTypes(ImmutableList<ObjectType> recTypes) {
      Map<String, JSType> props = new LinkedHashMap<>();
      for (ObjectType recType : recTypes) {
        for (String newPropName : recType.getOwnPropertyNames()) {
          JSType newPropValue = recType.getPropertyType(newPropName);
          // Put the new property depending if it already exists in the map
          putNewPropInPropertyMap(props, newPropName, newPropValue);
        }
      }
      return createRecordType(ImmutableMap.copyOf(props));
    }
docs: Merges a list of record types.
  Example
  {r:{s:string, n:number}} and {a:boolean}
  is transformed into {r:{s:string, n:number}, a:boolean}