-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathIFeature.cs
More file actions
472 lines (425 loc) · 28.5 KB
/
IFeature.cs
File metadata and controls
472 lines (425 loc) · 28.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
// -------------------------------------------------------------------------------------------------
// <copyright file="IFeature.cs" company="Starion Group S.A.">
//
// Copyright (C) 2022-2026 Starion Group S.A.
//
// Licensed 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
//
// http://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.
//
// </copyright>
// ------------------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------------------
// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!--------
// ------------------------------------------------------------------------------------------------
namespace SysML2.NET.Core.POCO.Core.Features
{
using System;
using System.CodeDom.Compiler;
using System.Collections.Generic;
using SysML2.NET.Core.Core.Types;
using SysML2.NET.Core.POCO.Core.Types;
using SysML2.NET.Core.POCO.Root.Annotations;
using SysML2.NET.Core.POCO.Root.Elements;
using SysML2.NET.Core.POCO.Root.Namespaces;
using SysML2.NET.Decorators;
/// <summary>
/// A Feature is a Type that classifies relations between multiple things (in the universe). The domain
/// of the relation is the intersection of the featuringTypes of the Feature. (The domain of a Feature
/// with no featuringTyps is implicitly the most general Type Base::Anything from the Kernel Semantic
/// Library.) The co-domain of the relation is the intersection of the types of the Feature.
/// In the simplest cases, the featuringTypes and types are Classifiers and the Feature
/// relates two things, one from the domain and one from the range. Examples include cars paired with
/// wheels, people paired with other people, and cars paired with numbers representing the car length.
/// Since Features are Types, their featuringTypes and types can be Features. In
/// this case, the Feature effectively classifies relations between relations, which can be interpreted
/// as the sequence of things related by the domain Feature concatenated with the sequence of things
/// related by the co-domain Feature. The values of a Feature for a given
/// instance of its domain are all the instances of its co-domain that are related to that domain
/// instance by the Feature. The values of a Feature with chainingFeatures are the same as values of the
/// last Feature in the chain, which can be found by starting with values of the first Feature, then
/// using those values as domain instances to obtain valus of the second Feature, and so on, to values
/// of the last Feature.
/// </summary>
[Class(xmiId: "_18_5_3_12e503d9_1533160651684_893483_42160", isAbstract: false, isFinalSpecialization: false, isActive: false)]
[GeneratedCode("SysML2.NET", "latest")]
public partial interface IFeature : IType
{
/// <summary>
/// The Feature that are chained together to determine the values of this Feature, derived from the
/// chainingFeatures of the ownedFeatureChainings of this Feature, in the same order. The values of a
/// Feature with chainingFeatures are the same as values of the last Feature in the chain, which can be
/// found by starting with the values of the first Feature (for each instance of the domain of the
/// original Feature), then using each of those as domain instances to find the values of the second
/// Feature in chainingFeatures, and so on, to values of the last Feature.
/// </summary>
[Property(xmiId: "_19_0_4_b9102da_1619792219511_543311_445", aggregation: AggregationKind.None, lowerValue: 0, upperValue: int.MaxValue, isOrdered: true, isReadOnly: false, isDerived: true, isDerivedUnion: false, isUnique: false, defaultValue: null)]
List<IFeature> chainingFeature { get; }
/// <summary>
/// The second chainingFeature of the crossedFeature of the ownedCrossSubsetting of this Feature, if it
/// has one. Semantically, the values of the crossFeature of an end Feature must include all values of
/// the end Feature obtained when navigating from values of the other end Features of the same
/// owningType.
/// </summary>
[Property(xmiId: "_19_0_4_b9102da_1689616227528_355910_218", aggregation: AggregationKind.None, lowerValue: 0, upperValue: 1, isOrdered: false, isReadOnly: false, isDerived: true, isDerivedUnion: false, isUnique: true, defaultValue: null)]
IFeature crossFeature { get; }
/// <summary>
/// Indicates how values of this Feature are determined or used (as specified for the
/// FeatureDirectionKind).
/// </summary>
[Property(xmiId: "_18_5_3_12e503d9_1533160674994_447677_43347", aggregation: AggregationKind.None, lowerValue: 0, upperValue: 1, isOrdered: false, isReadOnly: false, isDerived: false, isDerivedUnion: false, isUnique: true, defaultValue: null)]
FeatureDirectionKind? Direction { get; set; }
/// <summary>
/// The Type that is related to this Feature by an EndFeatureMembership in which the Feature is an
/// ownedMemberFeature.
/// </summary>
[Property(xmiId: "_18_5_3_12e503d9_1563834516279_920295_20653", aggregation: AggregationKind.None, lowerValue: 0, upperValue: 1, isOrdered: false, isReadOnly: false, isDerived: true, isDerivedUnion: false, isUnique: true, defaultValue: null)]
[SubsettedProperty(propertyName: "_18_5_3_12e503d9_1562476168386_366266_22107")]
[SubsettedProperty(propertyName: "_18_5_3_12e503d9_1533160674965_592215_43200")]
IType endOwningType { get; }
/// <summary>
/// The last of the chainingFeatures of this Feature, if it has any. Otherwise, this Feature itself.
/// </summary>
[Property(xmiId: "_2022x_2_12e503d9_1715790852907_110671_19", aggregation: AggregationKind.None, lowerValue: 1, upperValue: 1, isOrdered: false, isReadOnly: false, isDerived: true, isDerivedUnion: false, isUnique: true, defaultValue: null)]
IFeature featureTarget { get; }
/// <summary>
/// Types that feature this Feature, such that any instance in the domain of the Feature must be
/// classified by all of these Types, including at least all the featuringTypes of its typeFeaturings.
/// If the Feature is chained, then the featuringTypes of the first Feature in the chain are also
/// featuringTypes of the chained Feature.
/// </summary>
[Property(xmiId: "_19_0_4_12e503d9_1603905619975_304385_743", aggregation: AggregationKind.None, lowerValue: 0, upperValue: int.MaxValue, isOrdered: true, isReadOnly: false, isDerived: true, isDerivedUnion: false, isUnique: true, defaultValue: null)]
List<IType> featuringType { get; }
/// <summary>
/// Whether the Feature is a composite feature of its featuringType. If so, the values of the Feature
/// cannot exist after its featuring instance no longer does and cannot be values of another composite
/// feature that is not on the same featuring instance.
/// </summary>
[Property(xmiId: "_18_5_3_12e503d9_1533160674970_331870_43224", aggregation: AggregationKind.None, lowerValue: 1, upperValue: 1, isOrdered: false, isReadOnly: false, isDerived: false, isDerivedUnion: false, isUnique: true, defaultValue: "false")]
bool IsComposite { get; set; }
/// <summary>
/// If isVariable is true, then whether the value of this Feature nevertheless does not change over all
/// snapshots of its owningType.
/// </summary>
[Property(xmiId: "_18_5_3_12e503d9_1533160674993_300560_43342", aggregation: AggregationKind.None, lowerValue: 1, upperValue: 1, isOrdered: false, isReadOnly: false, isDerived: false, isDerivedUnion: false, isUnique: true, defaultValue: "false")]
bool IsConstant { get; set; }
/// <summary>
/// Whether the values of this Feature can always be computed from the values of other Features.
/// </summary>
[Property(xmiId: "_18_5_3_12e503d9_1533160674992_500504_43341", aggregation: AggregationKind.None, lowerValue: 1, upperValue: 1, isOrdered: false, isReadOnly: false, isDerived: false, isDerivedUnion: false, isUnique: true, defaultValue: "false")]
bool IsDerived { get; set; }
/// <summary>
/// Whether or not this Feature is an end Feature. An end Feature always has multiplicity 1, mapping
/// each of its domain instances to a single co-domain instance. However, it may have a crossFeature, in
/// which case values of the crossFeature must be the same as those found by navigation across instances
/// of the owningType from values of other end Features to values of this Feature. If the owningType has
/// n end Features, then the multiplicity, ordering, and uniqueness declared for the crossFeature of any
/// one of these end Features constrains the cardinality, ordering, and uniqueness of the collection of
/// values of that Feature reached by navigation when the values of the other n-1 end Features are held
/// fixed.
/// </summary>
[Property(xmiId: "_18_5_3_12e503d9_1562475749426_705395_21984", aggregation: AggregationKind.None, lowerValue: 1, upperValue: 1, isOrdered: false, isReadOnly: false, isDerived: false, isDerivedUnion: false, isUnique: true, defaultValue: "false")]
bool IsEnd { get; set; }
/// <summary>
/// Whether an order exists for the values of this Feature or not.
/// </summary>
[Property(xmiId: "_18_5_3_12e503d9_1533160674969_728225_43215", aggregation: AggregationKind.None, lowerValue: 1, upperValue: 1, isOrdered: false, isReadOnly: false, isDerived: false, isDerivedUnion: false, isUnique: true, defaultValue: "false")]
bool IsOrdered { get; set; }
/// <summary>
/// Whether the values of this Feature are contained in the space and time of instances of the domain of
/// the Feature and represent the same thing as those instances.
/// </summary>
[Property(xmiId: "_18_5_3_b9102da_1559231981638_234817_22063", aggregation: AggregationKind.None, lowerValue: 1, upperValue: 1, isOrdered: false, isReadOnly: false, isDerived: false, isDerivedUnion: false, isUnique: true, defaultValue: "false")]
bool IsPortion { get; set; }
/// <summary>
/// Whether or not values for this Feature must have no duplicates or not.
/// </summary>
[Property(xmiId: "_18_5_3_12e503d9_1533160674968_321342_43214", aggregation: AggregationKind.None, lowerValue: 1, upperValue: 1, isOrdered: false, isReadOnly: false, isDerived: false, isDerivedUnion: false, isUnique: true, defaultValue: "true")]
bool IsUnique { get; set; }
/// <summary>
/// Whether the value of this Feature might vary over time. That is, whether the Feature may have a
/// different value for each snapshot of an owningType that is an Occurrence.
/// </summary>
[Property(xmiId: "_2022x_2_12e503d9_1725998273002_23711_212", aggregation: AggregationKind.None, lowerValue: 1, upperValue: 1, isOrdered: false, isReadOnly: false, isDerived: false, isDerivedUnion: false, isUnique: true, defaultValue: "false")]
bool IsVariable { get; set; }
/// <summary>
/// The one ownedSubsetting of this Feature, if any, that is a CrossSubsetting}, for which the Feature
/// is the crossingFeature.
/// </summary>
[Property(xmiId: "_19_0_4_b9102da_1689616916594_145818_277", aggregation: AggregationKind.Composite, lowerValue: 0, upperValue: 1, isOrdered: false, isReadOnly: false, isDerived: true, isDerivedUnion: false, isUnique: true, defaultValue: null)]
[SubsettedProperty(propertyName: "_18_5_3_12e503d9_1533160674970_472382_43221")]
ICrossSubsetting ownedCrossSubsetting { get; }
/// <summary>
/// The ownedRelationships of this Feature that are FeatureChainings, for which the Feature will be the
/// featureChained.
/// </summary>
[Property(xmiId: "_19_0_4_b9102da_1622125589880_791465_72", aggregation: AggregationKind.Composite, lowerValue: 0, upperValue: int.MaxValue, isOrdered: true, isReadOnly: false, isDerived: true, isDerivedUnion: false, isUnique: true, defaultValue: null)]
[SubsettedProperty(propertyName: "_18_5_3_12e503d9_1543092026091_217766_16748")]
[SubsettedProperty(propertyName: "_18_5_3_12e503d9_1533160674971_80547_43227")]
List<IFeatureChaining> ownedFeatureChaining { get; }
/// <summary>
/// The ownedRelationships of this Feature that are FeatureInvertings and for which the Feature is the
/// featureInverted.
/// </summary>
[Property(xmiId: "_19_0_4_b9102da_1653567738671_359235_43", aggregation: AggregationKind.Composite, lowerValue: 0, upperValue: int.MaxValue, isOrdered: false, isReadOnly: false, isDerived: true, isDerivedUnion: false, isUnique: true, defaultValue: null)]
[SubsettedProperty(propertyName: "_19_0_4_b9102da_1623178838861_768019_145")]
[SubsettedProperty(propertyName: "_18_5_3_12e503d9_1543092026091_217766_16748")]
List<IFeatureInverting> ownedFeatureInverting { get; }
/// <summary>
/// The ownedSubsettings of this Feature that are Redefinitions, for which the Feature is the
/// redefiningFeature.
/// </summary>
[Property(xmiId: "_18_5_3_12e503d9_1533160674970_161813_43220", aggregation: AggregationKind.Composite, lowerValue: 0, upperValue: int.MaxValue, isOrdered: false, isReadOnly: false, isDerived: true, isDerivedUnion: false, isUnique: true, defaultValue: null)]
[SubsettedProperty(propertyName: "_18_5_3_12e503d9_1533160674970_472382_43221")]
List<IRedefinition> ownedRedefinition { get; }
/// <summary>
/// The one ownedSubsetting of this Feature, if any, that is a ReferenceSubsetting, for which the
/// Feature is the referencingFeature.
/// </summary>
[Property(xmiId: "_19_0_4_12e503d9_1661555161564_247405_255", aggregation: AggregationKind.Composite, lowerValue: 0, upperValue: 1, isOrdered: false, isReadOnly: false, isDerived: true, isDerivedUnion: false, isUnique: true, defaultValue: null)]
[SubsettedProperty(propertyName: "_18_5_3_12e503d9_1533160674970_472382_43221")]
IReferenceSubsetting ownedReferenceSubsetting { get; }
/// <summary>
/// The ownedSpecializations of this Feature that are Subsettings, for which the Feature is the
/// subsettingFeature.
/// </summary>
[Property(xmiId: "_18_5_3_12e503d9_1533160674970_472382_43221", aggregation: AggregationKind.Composite, lowerValue: 0, upperValue: int.MaxValue, isOrdered: false, isReadOnly: false, isDerived: true, isDerivedUnion: false, isUnique: true, defaultValue: null)]
[SubsettedProperty(propertyName: "_18_5_3_12e503d9_1533160674959_579676_43168")]
[SubsettedProperty(propertyName: "_18_5_3_12e503d9_1533160674966_718145_43205")]
List<ISubsetting> ownedSubsetting { get; }
/// <summary>
/// The ownedRelationships of this Feature that are TypeFeaturings and for which the Feature is the
/// featureOfType.
/// </summary>
[Property(xmiId: "_19_0_4_12e503d9_1603905673975_310948_762", aggregation: AggregationKind.Composite, lowerValue: 0, upperValue: int.MaxValue, isOrdered: true, isReadOnly: false, isDerived: true, isDerivedUnion: false, isUnique: true, defaultValue: null)]
[SubsettedProperty(propertyName: "_19_0_4_12e503d9_1603904928950_196800_580")]
[SubsettedProperty(propertyName: "_18_5_3_12e503d9_1543092026091_217766_16748")]
List<ITypeFeaturing> ownedTypeFeaturing { get; }
/// <summary>
/// The ownedSpecializations of this Feature that are FeatureTypings, for which the Feature is the
/// typedFeature.
/// </summary>
[Property(xmiId: "_19_0_2_12e503d9_1596597427751_965862_42", aggregation: AggregationKind.Composite, lowerValue: 0, upperValue: int.MaxValue, isOrdered: true, isReadOnly: false, isDerived: true, isDerivedUnion: false, isUnique: true, defaultValue: null)]
[SubsettedProperty(propertyName: "_18_5_3_12e503d9_1533160674959_579676_43168")]
[SubsettedProperty(propertyName: "_18_5_3_12e503d9_1543180501615_804591_21100")]
List<IFeatureTyping> ownedTyping { get; }
/// <summary>
/// The FeatureMembership that owns this Feature as an ownedMemberFeature, determining its owningType.
/// </summary>
[Property(xmiId: "_18_5_3_12e503d9_1533160674970_68441_43223", aggregation: AggregationKind.None, lowerValue: 0, upperValue: 1, isOrdered: false, isReadOnly: false, isDerived: true, isDerivedUnion: false, isUnique: true, defaultValue: null)]
[SubsettedProperty(propertyName: "_18_5_3_12e503d9_1533160674972_622493_43236")]
IFeatureMembership owningFeatureMembership { get; }
/// <summary>
/// The Type that is the owningType of the owningFeatureMembership of this Feature.
/// </summary>
[Property(xmiId: "_18_5_3_12e503d9_1533160674965_592215_43200", aggregation: AggregationKind.None, lowerValue: 0, upperValue: 1, isOrdered: false, isReadOnly: false, isDerived: true, isDerivedUnion: false, isUnique: true, defaultValue: null)]
[SubsettedProperty(propertyName: "_18_5_3_12e503d9_1533160674987_297074_43308")]
[SubsettedProperty(propertyName: "_18_5_3_12e503d9_1533160674986_474739_43306")]
[SubsettedProperty(propertyName: "_19_0_4_12e503d9_1603905619975_304385_743")]
IType owningType { get; }
/// <summary>
/// Types that restrict the values of this Feature, such that the values must be instances of all the
/// types. The types of a Feature are derived from its typings and the types of its subsettings. If the
/// Feature is chained, then the types of the last Feature in the chain are also types of the chained
/// Feature.
/// </summary>
[Property(xmiId: "_18_5_3_12e503d9_1533160674969_376003_43216", aggregation: AggregationKind.None, lowerValue: 0, upperValue: int.MaxValue, isOrdered: true, isReadOnly: false, isDerived: true, isDerivedUnion: false, isUnique: true, defaultValue: null)]
List<IType> type { get; }
/// <summary>
/// Return the directionOf this Feature relative to the given type.
/// </summary>
/// <param name="type">
/// No documentation provided
/// </param>
/// <returns>
/// The expected <see cref="FeatureDirectionKind" />
/// </returns>
FeatureDirectionKind? DirectionFor(IType type) => this.ComputeDirectionForOperation(type);
/// <summary>
/// If a Feature has no declaredShortName or declaredName, then its effective shortName is given by the
/// effective shortName of the Feature returned by the namingFeature() operation, if any.
/// </summary>
/// <returns>
/// The expected <see cref="string" />
/// </returns>
new string EffectiveShortName() => this.ComputeRedefinedEffectiveShortNameOperation();
/// <summary>
/// If a Feature has no declaredName or declaredShortName , then its
/// effective name is given by the effective name of the Feature returned by the namingFeature()
/// operation, if any.
/// </summary>
/// <returns>
/// The expected <see cref="string" />
/// </returns>
new string EffectiveName() => this.ComputeRedefinedEffectiveNameOperation();
/// <summary>
/// By default, the naming Feature of a Feature is given by its first redefinedFeature of its first
/// ownedRedefinition, if any.
/// </summary>
/// <returns>
/// The expected <see cref="IFeature" />
/// </returns>
IFeature NamingFeature() => this.ComputeNamingFeatureOperation();
/// <summary>
/// </summary>
/// <param name="excludeImplied">
/// No documentation provided
/// </param>
/// <returns>
/// The expected collection of <see cref="IType" />
/// </returns>
new List<IType> Supertypes(bool excludeImplied) => this.ComputeRedefinedSupertypesOperation(excludeImplied);
/// <summary>
/// Check whether this Feature directly redefines the given redefinedFeature.
/// </summary>
/// <param name="redefinedFeature">
/// No documentation provided
/// </param>
/// <returns>
/// The expected <see cref="bool" />
/// </returns>
bool Redefines(IFeature redefinedFeature) => this.ComputeRedefinesOperation(redefinedFeature);
/// <summary>
/// Check whether this Feature directly redefines the named library Feature. libraryFeatureName must
/// conform to the syntax of a KerML qualified name and must resolve to a Feature in global scope.
/// </summary>
/// <param name="libraryFeatureName">
/// No documentation provided
/// </param>
/// <returns>
/// The expected <see cref="bool" />
/// </returns>
bool RedefinesFromLibrary(string libraryFeatureName) => this.ComputeRedefinesFromLibraryOperation(libraryFeatureName);
/// <summary>
/// Check whether this Feature directly or indirectly specializes a Feature whose last two
/// chainingFeatures are the given Features first and second.
/// </summary>
/// <param name="first">
/// No documentation provided
/// </param>
/// <param name="second">
/// No documentation provided
/// </param>
/// <returns>
/// The expected <see cref="bool" />
/// </returns>
bool SubsetsChain(IFeature first, IFeature second) => this.ComputeSubsetsChainOperation(first, second);
/// <summary>
/// A Feature is compatible with an otherType if it either directly or indirectly specializes the
/// otherType or if the otherType is also a Feature and all of the following are true.
/// <ol> <li>Neither this Feature or the otherType have any
/// ownedFeatures.</li> <li>This Feature directly or indirectly redefines a
/// Feature that is also directly or indirectly redefined by the otherType.</li>
/// <li>This Feature can access the otherType. </li></ol>
/// </summary>
/// <param name="otherType">
/// No documentation provided
/// </param>
/// <returns>
/// The expected <see cref="bool" />
/// </returns>
new bool IsCompatibleWith(IType otherType) => this.ComputeRedefinedIsCompatibleWithOperation(otherType);
/// <summary>
/// Return the Features used to determine the types of this Feature (other than this Feature itself). If
/// this Feature is not conjugated, then the typingFeatures consist of all subsetted Features, except
/// from CrossSubsetting, and the last chainingFeature (if any). If this Feature is conjugated, then the
/// typingFeatures are only its originalType (if the originalType is a Feature).
/// <strong>Note.</strong> CrossSubsetting is excluded from the determination of the type of a
/// Feature in order to avoid circularity in the construction of implied CrossSubsetting relationships.
/// The validateFeatureCrossFeatureType requires that the crossFeature of a Feature have the same type
/// as the Feature.
/// </summary>
/// <returns>
/// The expected collection of <see cref="IFeature" />
/// </returns>
List<IFeature> TypingFeatures() => this.ComputeTypingFeaturesOperation();
/// <summary>
/// If isCartesianProduct is true, then return the list of Types whose Cartesian product can be
/// represented by this Feature. (If isCartesianProduct is not true, the operation will still return a
/// valid value, it will just not represent anything useful.)
/// </summary>
/// <returns>
/// The expected collection of <see cref="IType" />
/// </returns>
List<IType> AsCartesianProduct() => this.ComputeAsCartesianProductOperation();
/// <summary>
/// Check whether this Feature can be used to represent a Cartesian product of Types.
/// </summary>
/// <returns>
/// The expected <see cref="bool" />
/// </returns>
bool IsCartesianProduct() => this.ComputeIsCartesianProductOperation();
/// <summary>
/// Return whether this Feature is an owned cross Feature of an end Feature.
/// </summary>
/// <returns>
/// The expected <see cref="bool" />
/// </returns>
bool IsOwnedCrossFeature() => this.ComputeIsOwnedCrossFeatureOperation();
/// <summary>
/// If this Feature is an end Feature of its owningType, then return the first ownedMember of the
/// Feature that is a Feature, but not a Multiplicity or a MetadataFeature, and whose owningMembership
/// is not a FeatureMembership. If this exists, it is the crossFeature of the end Feature.
/// </summary>
/// <returns>
/// The expected <see cref="IFeature" />
/// </returns>
IFeature OwnedCrossFeature() => this.ComputeOwnedCrossFeatureOperation();
/// <summary>
/// Return this Feature and all the Features that are directly or indirectly Redefined by this Feature.
/// </summary>
/// <returns>
/// The expected collection of <see cref="IFeature" />
/// </returns>
List<IFeature> AllRedefinedFeatures() => this.ComputeAllRedefinedFeaturesOperation();
/// <summary>
/// Return if the featuringTypes of this Feature are compatible with the given type. If type is null,
/// then check if this Feature is explicitly or implicitly featured by Base::Anything. If this Feature
/// has isVariable = true, then also consider it to be featured within its owningType. If this Feature
/// is a feature chain whose first chainingFeature has isVariable = true, then also consider it to be
/// featured within the owningType of its first chainingFeature.
/// </summary>
/// <param name="type">
/// No documentation provided
/// </param>
/// <returns>
/// The expected <see cref="bool" />
/// </returns>
bool IsFeaturedWithin(IType type) => this.ComputeIsFeaturedWithinOperation(type);
/// <summary>
/// A Feature can access another feature if the other feature is featured within one of the direct or
/// indirect featuringTypes of this Feature.
/// </summary>
/// <param name="feature">
/// No documentation provided
/// </param>
/// <returns>
/// The expected <see cref="bool" />
/// </returns>
bool CanAccess(IFeature feature) => this.ComputeCanAccessOperation(feature);
/// <summary>
/// Return whether the given type must be a featuringType of this Feature. If this Feature has
/// isVariable = false, then return true if the type is the owningType of the Feature. If isVariable =
/// true, then return true if the type is a Feature representing the snapshots of the owningType of this
/// Feature.
/// </summary>
/// <param name="type">
/// No documentation provided
/// </param>
/// <returns>
/// The expected <see cref="bool" />
/// </returns>
bool IsFeaturingType(IType type) => this.ComputeIsFeaturingTypeOperation(type);
}
}
// ------------------------------------------------------------------------------------------------
// --------THIS IS AN AUTOMATICALLY GENERATED FILE. ANY MANUAL CHANGES WILL BE OVERWRITTEN!--------
// ------------------------------------------------------------------------------------------------