package org.eclipse.jem.internal.beaninfo.vm;
/*******************************************************************************
 * Copyright (c)  2003 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials 
 * are made available under the terms of the Common Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/cpl-v10.html
 * 
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
/*
 *  $RCSfile: ModelingBeanInfo14.java,v $
 *  $Revision: 1.1 $  $Date: 2003/10/27 17:17:59 $ 
 */

import java.beans.BeanInfo;

/**
 * @author richkulp
 *
 * To change this generated comment edit the template variable "typecomment":
 * Window>Preferences>Java>Templates.
 * To enable and disable the creation of type comments go to
 * Window>Preferences>Java>Code Generation.
 */
public class ModelingBeanInfo14 extends ModelingBeanInfo {

	/**
	 * Constructor for ModelingBeanInfo14.
	 * @param beanInfo
	 */
	public ModelingBeanInfo14(BeanInfo beanInfo) {
		super(beanInfo);
	}

	/**
	 * Constructor for ModelingBeanInfo14.
	 * @param beanInfo
	 * @param superBeanInfo
	 */
	public ModelingBeanInfo14(BeanInfo beanInfo, BeanInfo superBeanInfo) {
		super(beanInfo, superBeanInfo);
	}
}
