My question is how .swiftinterface describes globalValue1 and globalValue2 has the same type?
In this case, .swiftinterface for module A would be:
public protocol P {
}
public var globalValue1: opaque P { get set }
public var globalValue2: opaque P { get set }
We can't expose generateP() here, right?