#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
# 
#     https://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing, software 
# distributed under the License is distributed on an "AS IS" BASIS, 
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
# See the License for the specific language governing permissions and 
# limitations under the License.
#

# Classnames can have the following attributes: 
#          jdo:{persistent|transactional} 
#          super: <classname> 
#          oid: <classname> 
#          access: {public|protected|package|private} 
# Fieldnames can have the following attributes: 
#          type:<type> 
#          access: {public|protected|package|private} 
#          jdo:{persistent|transactional|transient} 
#          annotation:{key|dfg|mediated} 

org.apache.jdo.tck.pc.inheritance.AllPersist=jdo:persistent,oid:org.apache.jdo.tck.pc.inheritance.AllPersist$Id
org.apache.jdo.tck.pc.inheritance.AllPersist#intA=jdo:transient
org.apache.jdo.tck.pc.inheritance.AllPersist#doubleB=jdo:persistent,annotation:mediated
org.apache.jdo.tck.pc.inheritance.AllPersist#intB=jdo:persistent,annotation:mediated
org.apache.jdo.tck.pc.inheritance.AllPersist#keyValue=jdo:persistent,annotation:key

org.apache.jdo.tck.pc.inheritance.AllPersist2=jdo:persistent,super:org.apache.jdo.tck.pc.inheritance.AllPersist
org.apache.jdo.tck.pc.inheritance.AllPersist2#floatE=jdo:persistent,annotation:mediated
org.apache.jdo.tck.pc.inheritance.AllPersist2#charC=jdo:transient
org.apache.jdo.tck.pc.inheritance.AllPersist2#booleanD=jdo:transient

org.apache.jdo.tck.pc.inheritance.AllPersist3=jdo:persistent,super:org.apache.jdo.tck.pc.inheritance.AllPersist2
org.apache.jdo.tck.pc.inheritance.AllPersist3#secondObj=jdo:persistent,annotation:mediated
org.apache.jdo.tck.pc.inheritance.AllPersist3#shortF=jdo:persistent,annotation:mediated
org.apache.jdo.tck.pc.inheritance.AllPersist3#thirdObj=jdo:persistent,annotation:mediated

org.apache.jdo.tck.pc.inheritance.AllPersist4=jdo:persistent,super:org.apache.jdo.tck.pc.inheritance.AllPersist3
org.apache.jdo.tck.pc.inheritance.AllPersist4#shortG=jdo:transient
org.apache.jdo.tck.pc.inheritance.AllPersist4#intH=jdo:persistent,annotation:mediated

org.apache.jdo.tck.pc.inheritance.FieldSameName=jdo:persistent,oid:org.apache.jdo.tck.pc.inheritance.FieldSameName$Id
org.apache.jdo.tck.pc.inheritance.FieldSameName#keyValue=jdo:persistent,annotation:key
org.apache.jdo.tck.pc.inheritance.FieldSameName#n1=jdo:transient
org.apache.jdo.tck.pc.inheritance.FieldSameName#n2=jdo:persistent,annotation:mediated
org.apache.jdo.tck.pc.inheritance.FieldSameName#n3=jdo:persistent,annotation:mediated

org.apache.jdo.tck.pc.inheritance.FieldSameName2=jdo:persistent,super:org.apache.jdo.tck.pc.inheritance.FieldSameName
org.apache.jdo.tck.pc.inheritance.FieldSameName2#n1=jdo:transient
org.apache.jdo.tck.pc.inheritance.FieldSameName2#n2=jdo:transient
org.apache.jdo.tck.pc.inheritance.FieldSameName2#n3=jdo:transactional,annotation:mediated

org.apache.jdo.tck.pc.inheritance.FieldSameName3=jdo:persistent,super:org.apache.jdo.tck.pc.inheritance.FieldSameName2
org.apache.jdo.tck.pc.inheritance.FieldSameName3#n1=jdo:persistent,annotation:mediated
org.apache.jdo.tck.pc.inheritance.FieldSameName3#n2=jdo:transactional,annotation:mediated
org.apache.jdo.tck.pc.inheritance.FieldSameName3#n3=jdo:persistent,annotation:mediated

org.apache.jdo.tck.pc.inheritance.FieldSameName4=jdo:persistent,super:org.apache.jdo.tck.pc.inheritance.FieldSameName3
org.apache.jdo.tck.pc.inheritance.FieldSameName4#n1=jdo:transient
org.apache.jdo.tck.pc.inheritance.FieldSameName4#n2=jdo:transient
org.apache.jdo.tck.pc.inheritance.FieldSameName4#n3=jdo:persistent,annotation:mediated

org.apache.jdo.tck.pc.inheritance.TopNonPersistB=jdo:persistent,oid:org.apache.jdo.tck.pc.inheritance.TopNonPersistB$Id
org.apache.jdo.tck.pc.inheritance.TopNonPersistB#doubleB=jdo:persistent,annotation:mediated
org.apache.jdo.tck.pc.inheritance.TopNonPersistB#intB=jdo:persistent,annotation:mediated
org.apache.jdo.tck.pc.inheritance.TopNonPersistB#keyValue=jdo:persistent,annotation:key

org.apache.jdo.tck.pc.inheritance.TopNonPersistE=jdo:persistent,super:org.apache.jdo.tck.pc.inheritance.TopNonPersistB
org.apache.jdo.tck.pc.inheritance.TopNonPersistE#floatE=jdo:persistent,annotation:mediated

org.apache.jdo.tck.pc.inheritance.TopNonPersistF=jdo:persistent,super:org.apache.jdo.tck.pc.inheritance.TopNonPersistE
org.apache.jdo.tck.pc.inheritance.TopNonPersistF#secondObj=jdo:persistent,annotation:mediated
org.apache.jdo.tck.pc.inheritance.TopNonPersistF#shortF=jdo:persistent,annotation:mediated
org.apache.jdo.tck.pc.inheritance.TopNonPersistF#thirdObj=jdo:persistent,annotation:mediated

org.apache.jdo.tck.pc.inheritance.TopNonPersistH=jdo:persistent,super:org.apache.jdo.tck.pc.inheritance.TopNonPersistF
org.apache.jdo.tck.pc.inheritance.TopNonPersistH#intH=jdo:persistent,annotation:mediated

org.apache.jdo.tck.pc.inheritance.TopPersist=jdo:persistent,oid:org.apache.jdo.tck.pc.inheritance.TopPersist$Id
org.apache.jdo.tck.pc.inheritance.TopPersist#intA=jdo:transient
org.apache.jdo.tck.pc.inheritance.TopPersist#doubleB=jdo:persistent,annotation:mediated
org.apache.jdo.tck.pc.inheritance.TopPersist#intB=jdo:persistent,annotation:mediated
org.apache.jdo.tck.pc.inheritance.TopPersist#keyValue=jdo:persistent,annotation:key

org.apache.jdo.tck.pc.inheritance.TopPersistE=jdo:persistent,super:org.apache.jdo.tck.pc.inheritance.TopPersist
org.apache.jdo.tck.pc.inheritance.TopPersistE#floatE=jdo:persistent,annotation:mediated

org.apache.jdo.tck.pc.inheritance.TopPersistF=jdo:persistent,super:org.apache.jdo.tck.pc.inheritance.TopPersistE
org.apache.jdo.tck.pc.inheritance.TopPersistF#secondObj=jdo:persistent,annotation:mediated
org.apache.jdo.tck.pc.inheritance.TopPersistF#shortF=jdo:persistent,annotation:mediated
org.apache.jdo.tck.pc.inheritance.TopPersistF#thirdObj=jdo:persistent,annotation:mediated

org.apache.jdo.tck.pc.inheritance.TopPersistH=jdo:persistent,super:org.apache.jdo.tck.pc.inheritance.TopPersistF
org.apache.jdo.tck.pc.inheritance.TopPersistH#intH=jdo:persistent,annotation:mediated

