class ImagePyramidReader extends AbstractGridCoverage2DReader implements GridCoverageReader {

	public GridCoverage2D read(GeneralParameterValue[] params) throws IOException {

		GeneralEnvelope requestedEnvelope = null;
		Rectangle dim = null;
		OverviewPolicy overviewPolicy=null;
		if (params != null) {
			// /////////////////////////////////////////////////////////////////////
			//
			// Checking params
			//
			// /////////////////////////////////////////////////////////////////////
			if (params != null) {
				for (int i = 0; i < params.length; i++) {
					@SuppressWarnings("rawtypes")
                    final ParameterValue param = (ParameterValue) params[i];
					if (param == null){
						continue;
					}
					final String name = param.getDescriptor().getName().getCode();
					if (name.equals(AbstractGridFormat.READ_GRIDGEOMETRY2D.getName().toString())) {
						final GridGeometry2D gg = (GridGeometry2D) param.getValue();
						requestedEnvelope = new GeneralEnvelope((Envelope)gg.getEnvelope2D());
						dim = gg.getGridRange2D().getBounds();
						continue;
					}
					if (name.equals(AbstractGridFormat.OVERVIEW_POLICY.getName().toString())) {
						overviewPolicy = (OverviewPolicy) param.getValue();
						continue;
					}
				}
			}
		}

		//
		// Loading tiles
		//
		return loadTiles(requestedEnvelope, dim, params, overviewPolicy);
	}

	public  ImagePyramidReader(Object source, Hints uHints);
	public  ImagePyramidReader(Object source);

}