code: public static VCProjectHolder getVCProjectHolder( File inputFile, boolean isSolution, 
              Map<String, String> envVariables )
      {
          VCProjectHolder vcProjectHolder = VCPROJECT_HOLDERS.get( inputFile );
          
          if ( vcProjectHolder == null )
          {
              vcProjectHolder = new VCProjectHolder( inputFile, isSolution, envVariables );
              VCPROJECT_HOLDERS.put( inputFile, vcProjectHolder );
          }
          
          return vcProjectHolder;
      }
docs: Find or create a container for parsed Visual C++ projects. If a container has already been created for the given
  {@code inputFile} that container is returned; otherwise a new container is created.
  @param inputFile the file to parse, it can be a Visual Studio solution (containing Visual C++ projects) or a
  standalone Visual C++ project
  @param isSolution {@code true} if {@code inputFile} is a solution, {@code false} if it is a standalone project
  @param envVariables a map containing environment variable values to substitute while parsing the properties of
  Visual C++ projects (such as values for {@code SolutionDir}, {@code Platform}, {@code Configuration}, or for any
  environment variable expressed as {@code $(variable)} in the project properties); note that these values will
  <em>override</em> the defaults provided by the OS or set by {@link VCProjectHolder#getParsedProjects}
  @return the container for parsed Visual C++ projects