class Parser implements IParser {

	@Override
	public ParsedInfo parse() throws APIRestGeneratorException
	{
		// Generate a new instance of the parsed info
		final ParsedInfo parsedInfo 			= new ParsedInfo() ;
		
		// Deserialize it into JSON
		final JsonNode fileContent 				= ParserUtil.deserializeIntoJson(this.filePath) ;
		
		// Parse the root values
		final RootValues rootValues 			= this.parseRootValues(fileContent) ;
		parsedInfo.setRootValues(rootValues) ;
		
		// Parse the info values
		final InfoValues infoValues 		  	= this.parseInfoValues(fileContent) ;
		parsedInfo.setInfoValues(infoValues) ;
		
		// Parse the definitions
		final Definitions definitions 		    = this.parseDefinitions(fileContent) ;
		parsedInfo.setDefinitions(definitions) ;
		
		// Parse the common parameters
		final ParametersGlobal parametersGlobal = this.parseParameters(fileContent, rootValues, definitions) ;
		parsedInfo.setParametersGlobal(parametersGlobal) ;
		
		// Parse the common responses
		final Responses responses	  			= this.parseResponses(fileContent, definitions) ;
		parsedInfo.setResponses(responses) ;
		
		// Parse the paths
		final Paths paths			  			= this.parsePaths(fileContent, rootValues, definitions, parametersGlobal, responses) ;
		parsedInfo.setPaths(paths) ;
		
		// Parse Generator properties parameters
		final GeneratorParams generatorParams	= this.parseGeneratorParams(fileContent) ;
		parsedInfo.setGeneratorParams(generatorParams) ;
		
		// Logging the parsed result
		if (Parser.LOGGER.isDebugEnabled())
		{
			Parser.LOGGER.debug(parsedInfo.toString()) ;
		}
		
		return parsedInfo ;
	}

	public  Parser(final String filePath);

}