public static ShaderRootClassType Compose(this ShaderRootClassType sourceClass, string variableName, params ShaderClassType[] variableTypes) { var currentVariableTypes = (Dictionary <string, ShaderClassType[]>)sourceClass.GetTag(associatedCompositions); if (currentVariableTypes == null) { currentVariableTypes = new Dictionary <string, ShaderClassType[]>(); sourceClass.SetTag(associatedCompositions, currentVariableTypes); } currentVariableTypes[variableName] = variableTypes; return(sourceClass); }