For future reference to anyone else who might go down a similar rabbit hole, the best compromise I could find/make was this:
public protocol iStat
{
var _Value: Int64 {get set}
var Value: Int64 {get}
mutating func SetValue(_ _new_value: Int64)
}
extension iStat
{
public var Value: Int64 {get {return _Value}}
public mutating func SetValue(_ _new_value: Int64)
{
_Value = _new_value
}
}
public class InternalTest : iStat
{
@_spi(internal_only) public var _Value: Int64 = 0
public init(){}
}
Alex’s method above also works fine as well, but if you want to achieve this through an extension, this is the only way to do it AFAIK.